package cn.ainit.sys.models;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import cn.ainit.common.ReturnObject;
import cn.ainit.sys.framework.entity.ComButtons;
import cn.ainit.sys.framework.entity.SysButtons;
import cn.ainit.sys.framework.entity.SysColumns;
import cn.ainit.sys.print.entity.SysPrint;
import cn.ainit.sys.query.datastore.DataStore;

public interface SingleService {
	/**
	 * 根据按钮ID 查询按钮List
	 * @param butnId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-13 下午03:28:52
	 */
	public List butnList(String butnId) throws Exception;
	
	/**
	 * 根据butnId 查询按钮的list （个性按钮,显示和保存并列）
	 * @param butnId
	 * @param dsId
	 * @param oId
	 * @return
	 * @throws Exception
	 */
	List butnListRightTop(String butnId, String dsId, String oId) throws Exception;
	
	/**
	 * 根据按钮ID 查询按钮List 实体类（ComButtons）
	 * @param butnId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-13 下午03:28:52
	 */
	public List<ComButtons> combutnList(String butnId) throws Exception;
	/**
	 * 根据DsId找到datastore中的JSUrl
	 * @param dsId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-13 下午03:29:06
	 */
	public DataStore getDataStore(String dsId) throws Exception;
	/**
	 * 根据sql查询相应的数据
	 * @param sqlText
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-14 下午03:42:19
	 */
	public List queryRowBySql(String sqlText) throws Exception;
	/***
	 * 加载字段
	 * @param colId
	 * @param type
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-3-14 下午04:07:23
	 */
	public List<SysColumns> loadColumns(String colId, String type) throws Exception;
	/***
	 * 查询fks
	 * @param string
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-18 上午10:57:26
	 */
	public List<SysColumns> findFksByDsid(String dsId) throws Exception;
	/***
	 * 查询pks
	 * @param string
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-18 上午10:57:26
	 */
	public List<Map<String, Object>> findPksByDsid(String dsId) throws Exception;
	/**
	 * 加载对照信息
	 * @param dsId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-29 下午06:35:20
	 */
	public List loadDzInfo(String dsId) throws Exception;
	/**
	 * 加载查询界面用户的数据sql
	 * @param dsId
	 * @param sqlText
	 * @param string
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-4-23 上午10:38:06
	 */
	public String formatSql(String dsId, String sqlText, String uid)throws Exception;
	/***
	 * 
	 * @param dsid
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-4-23 下午06:14:06
	 */
	public List<SysButtons> combutnListT(String dsid)throws Exception;
	/***
	 * 加载详情界面的数据
	 * @param dsId
	 * @param sqlText
	 * @param uid
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-5-20 下午04:47:29
	 */
	public String formatRowSql(String dsId, String sqlText, String uid)throws Exception;
	
	
	/***
	 * 根据dsId得到打印的模板集合
	 * @param dsId
	 * @return
	 * @throws Exception
	 */
	public List<SysPrint> printTypeList(String dsId) throws Exception;
	/**
	 * 根据butnId 查询按钮的list （公用按钮）
	 * @param butnId
	 * @param dsId
	 * @param oId
	 * @return
	 * @throws Exception
	 */
	List combutnListRight(String butnId,String dsId, String oId) throws Exception;
	/**
	 * 根据butnId 查询按钮的list （个性按钮）
	 * @param butnId
	 * @param dsId
	 * @param oId
	 * @return
	 * @throws Exception
	 */
	/**
	 * 导出excel类
	 * @param title 创建工作表的名称
	 * @param url  文件保存的路径及名称
	 * @param topName  excel中显示的翻译名称
	 * @param dbCellName  SQL中的列名
	 * @param list   根据DSID查找sql并执行sql所得到的数据Rows
	 * @return
	 * @throws Exception
	 */
	String dcExcel(String title,String url, String[] topName,
			String[] dbCellName, List<Map<String, String>> list) throws Exception;
	/**
	 * formatSQL  并翻译Ids
	 * @param dsId
	 * @param sqlText
	 * @param uid
	 * @return
	 * @throws Exception
	 */
	String formatTranSql(String dsId, String sqlText, String uid)throws Exception;
    /**
     * 
     * @Title: getReturnImproInfo
     * @author : FuXiangYi  
     * @Description: 获取导入的信息返回处理后地 数据
     * @param sp
     * @return    
     * @return List<Map<String,Object>> 
     * @date 2014-10-30 上午09:29:15
     */
	public String getReturnImproInfo(String flg,String dsid,String kvs,SingleParam sp);
	/**
	 *
	 * @Title: getReturnImproInfoZT
	 * @author : FuXiangYi
	 * @Description: 获取导入的信息返回处理后地 数据
	 * @param sp
	 * @return
	 * @return List<Map<String,Object>>
	 * @date 2014-10-30 上午09:29:15
	 */
	public String getReturnImproInfoZT(String flg,String dsid,String kvs,SingleParam sp);

	/**
	 *
	 * @Title: getReturnImproInfoZT
	 * @author : FuXiangYi
	 * @Description: 获取导入的信息返回处理后地 数据
	 * @param sp
	 * @return
	 * @return List<Map<String,Object>>
	 * @date 2014-10-30 上午09:29:15
	 */
	public String getReturnImproInfoCYXH(String flg,String dsid,String kvs,SingleParam sp);
	/**
     * 
     * @Title: getReturnImproInfo
     * @author : FuXiangYi  
     * @Description: 获取导入的信息返回处理后地 数据
     * @param sp
     * @return    
     * @return List<Map<String,Object>> 
     * @date 2014-10-30 上午09:29:15
     */
	public String getReturnImproInfoCw(String flg,String dsid,String kvs,SingleParam sp);
	public String getReturnImproInfoFee(String flg,String dsid,String kvs,SingleParam sp);
	/*******************************************
	 * 2015年11月26日17:46:30 刘振涛
	 * @param sp
	 * @param dsid
	 * @return
	 *******************************************/
	public String ImpExcelToDbAndProc(SingleParam sp,String dsid,String uid);
   /**
    * 根据书号搜索数据
    * @Title: getOrerInfo
    * @author : FuXiangYi  
    * @Description: 获取商品信息
    * @param sp
    * @return    
    * @return List<Map<String,Object>> 
    * @date 2014-10-31 下午02:34:26
    */
	public List<Map<String, Object>> getOrerInfo(SingleParam sp);
	/**
	 * 根据客户名称搜索数据
	 * @param sp
	 * @return
	 */
	public List<Map<String, Object>> getOrderKHInfo(SingleParam sp);
    /**
     * 
     * @Title: getDelMateOrder
     * @author : FuXiangYi  
     * @Description: 根据批次号删除临时表数据
     * @param sp
     * @return    
     * @return boolean 
     * @date 2014-11-1 下午05:43:52
     */
    public boolean getDelMateOrder(SingleParam sp);
    public boolean getDelMateOrder2(SingleParam sp);
    public boolean getDelMateOrders(SingleParam sp);
    public boolean delsmataOrdersfms(SingleParam sp);
    /**
     * 删除导入客户临时表中的数据
     * @param sp
     * @return
     */
    public boolean getDelKHDaat(SingleParam sp);
    /**
	 * 双击数据判断是否可以点击修改的权限
	 * @param dsId
	 * @param pkVal
	 * @param manId
	 * @return
	 * @throws Exception
	 */
	String dbclickRight(String dsId,String pkVal,String manId) throws Exception;
	/**
	 * 导入商品，执行的过程，进行匹配
	 * @param sp
	 * @return
	 */
	public List getReturnImpro(SingleParam sp);
	/**
	 * 导入客户，执行的过程，进行匹配
	 * @param sp
	 * @return
	 */
	public List getReturnImproKH(SingleParam sp);
	/**
	 * 根据客户Id查询该客户信息
	 * @param cId
	 * @return
	 */
	public List getClientById(String cId);

	/**
	 * @param butnId
	 * @param dsId
	 * @param oId
	 * @param flag
	 * @return
	 * @throws Exception
	 * @author feifei
	 * @date: 2015-5-4 下午06:31:57 
	 */
	List butnListRight(String butnId, String dsId, String oId, String flag)
			throws Exception;
	
	
	
	/****
	 * 得到明细中的不可复制的列的集合
	 * @param sql
	 * @return
	 * @throws Exception
	 */
	public List returnNCopyList(String mxDsId) throws Exception;
	
	public List<Map<String,Object>> queryProduct(String H_ISBN,String H_NAME);
	
	
	
	/***
	 * 发行的批量功能
	 * @param djId
	 * @param plFlag
	 * @param plRows
	 * @param session
	 * @return
	 * @throws Exception
	 */
	public ReturnObject setFxPl(String pkName,String zDsId,String dsId,String djId, String plFlag,JSONObject plObj, JSONArray plRows,
			HttpSession session) throws Exception;
    /*******************************************
     * lhl
     * @param sp
     * @param dsid
     * @return
     *******************************************/
    public int sureSaveisnull(String NAME,String ccid);


	public int cwygrkSaveisnull(String H_ID,String YGR_ID);
    /**
     *
     * @Title: getReturnImproInfofc
     * @author : FuXiangYi
     * @Description: 获取导入的信息返回处理后地 数据
     * @param sp
     * @return
     * @return List<Map<String,Object>>
     * @date 2014-10-30 上午09:29:15
     */
    public String getReturnImproInfofc(String flg,String dsid,String kvs,SingleParam sp);

    public List<Map<String,Object>> queryProductBYDAY(String H_ISBN,String H_NAME);

    public String getReturnImproInfofcByMonth(String flg,String dsid,String kvs,SingleParam sp);
}
